package nl.jaapniek.model;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Tabel {
	private String naam;
	private List<Veld> velden;
	private List<Groep> tabelIndex;
	private Map<Veld, ArrayList<Object>> tabelWaarden;

	public Tabel(String naam) {
		this.naam = naam;
		velden = new ArrayList<Veld>();
		tabelIndex = new ArrayList<Groep>();
		tabelWaarden = new HashMap<Veld, ArrayList<Object>>();
	}

	public String getNaam() {
		return naam;
	}

	public void setNaam(String naam) {
		this.naam = naam;
	}

	public List<Veld> getVelden() {
		return velden;
	}

	public void setVelden(List<Veld> velden) {
		this.velden = velden;
	}

	public void addVeld(Veld veld) {
		velden.add(veld);
	}

	public void addTabelIndex(Groep groep) {
		tabelIndex.add(groep);
	}

	public void addVeldwaarde(Veld veld, Object waarde) {
		ArrayList<Object> values = tabelWaarden.get(veld);
		if (values != null) {
			values.add(waarde);
			tabelWaarden.put(veld, values);
		} else {
			ArrayList<Object> vals = new ArrayList<Object>();
			vals.add(waarde);
			tabelWaarden.put(veld, vals);
		}
	}

	public List<Groep> getTabelIndex() {
		return tabelIndex;
	}

	public void setTabelIndex(List<Groep> tabelIndex1) {
		this.tabelIndex = tabelIndex1;
	}

	public Map<Veld, ArrayList<Object>> getTabelWaarden() {
		return tabelWaarden;
	}

	public void setTabelWaarden(Map<Veld, ArrayList<Object>> tabelWaarden) {
		this.tabelWaarden = tabelWaarden;
	}
	
	public String toString(){
		return naam;
	}
	
	public boolean equals(Object other){
		if(other instanceof Tabel){
			Tabel otherTabel = (Tabel)other;
			if(this.getNaam().equals(otherTabel.getNaam())){
				return true;
			}
			return false;
		}
		return false;
	}

}
